ns16550: More robust check for presence of FIFO
authorKeir Fraser <keir.fraser@citrix.com>
Tue, 28 Jul 2009 15:47:37 +0000 (16:47 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Tue, 28 Jul 2009 15:47:37 +0000 (16:47 +0100)
Signed-off-by: Christoph Egger <Christoph.Egger@amd.com>
xen/drivers/char/ns16550.c

index 1f889070083d5443e481bc86d30b60354c407319..7de7fcd386c9e392223a0cc6b09c9faf4e964313 100644 (file)
@@ -214,7 +214,8 @@ static void __devinit ns16550_init_preirq(struct serial_port *port)
     ns_write_reg(uart, FCR, FCR_ENABLE | FCR_CLRX | FCR_CLTX | FCR_TRG14);
 
     /* Check this really is a 16550+. Otherwise we have no FIFOs. */
-    if ( (ns_read_reg(uart, IIR) & 0xc0) == 0xc0 )
+    if ( ((ns_read_reg(uart, IIR) & 0xc0) == 0xc0) &&
+         ((ns_read_reg(uart, FCR) & FCR_TRG14) == FCR_TRG14) )
         port->tx_fifo_size = 16;
 }